package com.sfac.modules.common.controller;

import com.sfac.modules.common.vo.ImageType;
import org.springframework.web.bind.annotation.*;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/test")
public class EnumDictionaryController {

    public static Map<String,Class> map = new HashMap(){{
        put("imageType", ImageType.class);
    }};


    /**
     *  写法相当于:
     *     static {
     *         map.put("imageType", ImageType.class);
     *     }
     */
    @GetMapping(value = "/dictionary/{enumName}")
    public List<Object> enumDictionary(@PathVariable String enumName){
        // 接口获取枚举的名字传入，从map中获取对应的枚举的类模板
        Class clazz = map.get(enumName);
        if (clazz != null){
            // 通过反射的方式获取枚举的values方法，获得枚举数组
            try {
                Method method = clazz.getDeclaredMethod("values");
                Object[] objects = (Object[]) method.invoke(null);
                return Arrays.asList(objects);
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 将枚举数组转化为list对象，作为接口的返回值

        }
        return null;
    }

}
